package xyz.jangle.reflect;

import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
/**
 * 通过反射遍历属性值
 * @author Administrator
 *
 */
public class ForEachField {

    public static void main(String[] args) throws Exception{
        // 创建一个Person类的实例
        Person person = new Person("张三", 20);
        
        // 获取Person类的Class对象
        Class<?> clazz = person.getClass();
        
        // 获取所有字段的数组
        Field[] fields = clazz.getDeclaredFields();
        
        // 遍历字段并打印名称、修饰符和值
        for (Field field : fields){
            System.out.println("字段名：" + field.getName());
            System.out.println("修饰符：" + Modifier.toString(field.getModifiers()));
            
            // 设置访问权限为true，否则无法获取private字段的值
            field.setAccessible(true);
            Object value = field.get(person);
            System.out.println("字段值：" + value);
            System.out.println("------------------------");
        }
    }
}
 
class Person {
    @SuppressWarnings("unused")
	private String name;
    int age;
    
    public Person(String name, int age){
        this.name = name;
        this.age = age;
    }
}